package cn.telling.product.dao;

import java.util.List;

import cn.telling.product.vo.LgStoreUpdate;
import cn.telling.product.vo.StoreProductVo;
import cn.telling.product.vo.SupplyArea0Vo;

/**
 * 
 * @ClassName: IStoreProductDao 
 * @Description: 产品库存数据服务接口
 * @author 陈赟 
 * @date 2015年6月17日 上午9:31:45 
 *
 */
public interface IStoreProductDao {
    
    /**
     * 
     * @Title: insertStoreProduct 
     * @Description: 插入产品库存信息
     * @param @param vo    设定文件 
     * @return void    返回类型 
     * @throws 
     * @author 陈赟
     */
    void insertStoreProduct(List<StoreProductVo> storeProductlist);
    

    /**
     * 
     * @Title: storeProductLog 
     * @Description: 记录库存 
     * @param @param vo
     * @param @return    设定文件 
     * @return int    返回类型 
     * @throws 
     * @author 陈赟
     */
    int storeProductLog(StoreProductVo vo);

    /**
     * 
     * @Title: updateStoreProduct 
     * @Description: 更新产品库存
     * @param @param id
     * @param @param allocatable    设定文件 
     * @return void    返回类型 
     * @throws 
     * @author 陈赟
     */
    void updateStoreProduct(String id, String allocatable);
    
    /**
     * 
     * @Title: getStoreProductByAreaIdAndProductId 
     * @Description: 根据区域ID、产品ID获取库存信息
     * @param @param areaId
     * @param @param productId
     * @param @return    设定文件 
     * @return StoreProductVo    返回类型 
     * @throws 
     * @author 陈赟
     */
    StoreProductVo getStoreProductByAreaIdAndProductId(String areaId, String productId);

    /**
     * 
     * @Title: updateStoreProductBatch 
     * @Description: 批量更新产品库存
     * @param @param supplyArea0List 产品发布记录
     * @param @param storeList   仓库库存信息 
     * @param @param source 更新库存的发起者   订单：order，调拨：allocate
     * @return int    返回类型 
     * @throws 
     * @author 陈赟
     */
    int updateStoreProductBatch(List<SupplyArea0Vo> supplyArea0List, List<StoreProductVo> storeList, String source);
    
    /**
     * 
     * @Title: getSupplyArea0ByPkStorDocAndProductId 
     * @Description: 根据仓库编码和产品ID查找天联华建非定向发布的记录
     * @param @param pkStorDoc 仓库编码
     * @param @param productIds 产品ID
     * @param @return    设定文件 
     * @return List<SupplyArea0Vo>    返回类型 
     * @throws 
     * @author 陈赟
     */
    List<SupplyArea0Vo> getSupplyArea0ByPkStorDocAndProductIds(String pkStorDoc, String productIds);
    
    /**
     * 
     * @Title: getStoreProductByPkStorDocAndProductIds
     * @Description: 根据仓库编码、产品ID获取库存信息
     * @param @param pkStorDoc
     * @param @param productIds
     * @param @return    设定文件 
     * @return List<StoreProductVo>    返回类型 
     * @throws 
     * @author 陈赟
     */
    List<StoreProductVo> getStoreProductByPkStorDocAndProductIds(String pkStorDoc, String productIds);
    
    /**
     * 
     * @Title: insertLgStoreUpdate 
     * @Description: 插入更新库存的日志
     * @param @param lgStoreUpdateList
     * @param @return    设定文件 
     * @return int    返回类型 
     * @throws 
     * @author 陈赟
     */
    int insertLgStoreUpdate(List<LgStoreUpdate> lgStoreUpdateList);
}
